import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

/* Layout */
import Layout from '@/layout';
// import goodsRouter from './modules/goods'
import shopRouter from './modules/shop';
// import supplier from './modules/supplier'
import h5manage from './modules/h5manage';
import user from './modules/userInfo';
import system from './modules/system';
import member from './modules/member';
// import outwarehouse from './modules/outwarehouse'
// import inwarehouse from './modules/inwarehouse'
// import procure from './modules/procure'
// import storage from './modules/storage'
// import tms from './modules/tms'
// import finance from './modules/finance'
// import alertmanage from './modules/alertmanage'
// import genericGoods from './modules/genericGoods'

/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
import error_500 from '@/views/500.vue';
export const constantRoutes = [
	{
		path: '/login',
		component: () => import('@/views/login/index'),
		hidden: true
	},
	{
		path: '/app',
		hidden: true,
		component: () => import('@/views/app/index'),
		meta: { title: '下载', icon: '' }
	},
	{
		path: '/error_500',
		name: 'error_500',
		component: error_500,
		hidden: true
	},
	{
		path: '/',
		component: Layout,
		redirect: '/dashboard',
		children: [
			{
				path: 'dashboard',
				name: 'Dashboard',
				component: () => import('@/views/dashboard/index'),
				meta: { title: '首页', icon: 'zhuye' }
			}
		]
	},
	member,
	h5manage,
	system,
	shopRouter,
	user,
	{
		path: '/networkError',
		name: 'networkError',
		component: () => import('@/views/networkError'),
		hidden: true
	},
	{
		path: '/404',
		component: () => import('@/views/404'),
		hidden: true
	}
];

const createRouter = () =>
	new Router({
		// mode: 'history', // require service support
		scrollBehavior: () => ({ y: 0 }),
		routes: constantRoutes
	});

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
	const newRouter = createRouter();
	router.matcher = newRouter.matcher; // reset router
}

export default router;
